1. Field of the Invention
The present invention relates to a warm boot-up process for a computer system and more particularly to a relatively faster warm boot process which eliminates standard predetermined warm boot functions, such as rewriting the system BIOS when booting the computer system from a predetermined condition.
2. Description of the Prior Art
Personal computers have several modes of reset operation, including power-up, often referred to as cold boot, reset during operation (i.e., warm boot), and reset from protected mode operations. Each of these three modes has a specific set of requirements, depending upon the state of the computer system. In a computer system, any unnecessary access to cold boot routines residing in non-volatile memory space adversely affects perceived performance because non-volatile memory devices are typically slower than volatile memory devices. Booting time is reduced by slushing BIOS from non-volatile memory to volatile memory and then operating out of the volatile memory. This, however, does require repeated access to the lower non-volatile memory initially to copy the BIOS during the slushing operation.
On a cold boot, the computer system initializes all registers, tests and sizes all memory devices and tests all peripheral devices. This initialization and testing also can be time consuming, adversely affecting the computer user's perception of the computer system performance. It is desirable to avoid unneeded initialization and testing, and therefore warm boots were created as a subset to the cold boot process eliminating the need for initialization and testing previously performed during a prior cold boot.
Unfortunately, computer system architecture allows for only one reset entry point or reset vector to support all modes of reset and does not distinguish between warm and cold boots. Since several modes of reset are desired, however, it would be advantageous to provide several points of entry, allowing initialization to depend upon the predetermined state of the computer system. The problem is further aggravated by the needs of having the power-up or cold boot vectors being stored in a non-volatile storage device since the vector is the starting point for the computer system when power is applied. For example, the cold boot vector, normally stored in the reset vector location of the memory system, normally points to code that must initialize the computer system for basic operations, including determining the size of the memory, configuration of the memory controller, validation of configuration storage, and validation of memory integrity. In many systems, the cold boot routine also rewrites the BIOS system from the top of the memory map to an assigned system BIOS area in random access memory (RAM).
Each of the functions discussed above required on cold boot are relatively time-consuming. Normally a cold boot is not executed after the system has been operational, since the system starts from a clean slate and must be entirely reconfigured. Therefore, during such a condition a warm boot is executed which provides only a subset of the cold boot initialization routines, and therefore not subsequently requiring complete reconfiguration of the system after booting. Therefore, the reset vector in prior art systems must determine whether the entry was a cold boot entry or a warm boot entry. In the case of a cold boot entry, the cold boot specific code is first executed, then the warm boot code is entered to continue the booting process. In the case of a warm boot entry, the cold boot code is skipped and the warm boot code is executed directly. The warm boot code is used to perform all remaining system initialization and verification before code execution is transferred to the operating system. This code is particularly destructive of system configuration, as it will configure programmable devices in the system architecture in accordance with configuration information in the non-volatile configuration storage memory.
The reset from protected mode operation is a very abbreviated reset process used during extended memory operations on 80.times.86 computer systems. It is used to reset the processor, thus exiting the extended memory access mode of operation known as protected mode. In the Intel 80.times.86 family processors, this is the only way to exit from protected mode. In operation, the cold boot code will recognize the reset as warm boot, passing execution directly to the warm boot code. The warm boot code performs testing on circuitry to determine if it is a protected mode exit. In this case, the entire system initialization is skipped, as well as the loading of the operating system and the configuration of the system is preserved for reset. The warm boot code will transfer execution directly to the reset from protected mode code, which in turn returns the program execution to the code requesting the exit from the protected mode.
Even though the warm boot process is quicker than a cold boot because only a subset of functions are performed, the BIOS is still rewritten from ROM to RAM which takes considerable time, adversely affecting system performance. Two problems remain during a warm boot. Specifically, warm boots require access to slow non-volatile memory, and require a substantial amount of code copying to volatile memory while the BIOS is slushed. These problems are aggravated when memory is shared between processors.